package main

import (
	"fmt"
	"log"
	"os"
	"path/filepath"
)

// 指定要读取的目录
var dir string

func checkHasGitFile() (error, bool) {

	wdDir, wdeErr := os.Getwd() //获取当前目录
	if wdeErr != nil {
		fmt.Println("无法获取当前目录：", wdeErr)
		log.Fatal(wdeErr)
	}

	fmt.Println("当前目录：", wdDir)
	dir = wdDir

	checkStatus := false
	// 使用 Walk 函数遍历目录下的所有子目录和文件
	err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			fmt.Printf("遍历目录时发生错误: %v\n", err)
			return err
		}

		// 检查当前路径是否是目录
		if info.IsDir() {
			// 检查目录中是否存在 .git 文件夹
			if filepath.Base(path) == ".git" && info.Mode().IsDir() {
				fmt.Println(".git 文件夹存在于:", path)
				checkStatus = true
			}
		}

		return nil
	})

	//if err != nil {
	//	fmt.Printf("遍历目录时发生错误: %v\n", err)
	//}
	return err, checkStatus
}

// CheckIfError should be used to naively panics if an error is not nil.
func CheckIfError(err error) {
	if err == nil {
		return
	}

	fmt.Printf("\x1b[31;1m%s\x1b[0m\n", fmt.Sprintf("error: %s", err))
	os.Exit(1)
}

// Info should be used to describe the example commands that are about to run.
func Info(format string, args ...interface{}) {
	fmt.Printf("\x1b[34;1m%s\x1b[0m\n", fmt.Sprintf(format, args...))
}
